home *** CD-ROM | disk | FTP | other *** search
/ Game.EXE 2001 February / GAME_2.ISO / utilities / Opera 5.01 / Opera501_final_nonjava.exe / OPERA.JAR / opera / PluginContext.class (.txt) < prev    next >
Encoding:
Java Class File  |  2000-12-11  |  4.8 KB  |  193 lines

  1. package opera;
  2.  
  3. import java.applet.Applet;
  4. import java.applet.AppletContext;
  5. import java.applet.AudioClip;
  6. import java.awt.Image;
  7. import java.awt.Toolkit;
  8. import java.io.IOException;
  9. import java.net.URL;
  10. import java.security.AllPermission;
  11. import java.security.Permission;
  12. import java.util.Enumeration;
  13. import java.util.Hashtable;
  14. import java.util.Vector;
  15. import sun.applet.AppletAudioClip;
  16. import sun.awt.image.URLImageSource;
  17.  
  18. public class PluginContext implements AppletContext {
  19.    protected static Object opera_mutex = new Object();
  20.    private Hashtable panels = new Hashtable();
  21.    public int document_ptr = 0;
  22.    private int nextInstance = 0;
  23.    private PluginClassLoader loader = null;
  24.  
  25.    public PluginContext(int var1) {
  26.       this.document_ptr = var1;
  27.    }
  28.  
  29.    public Applet getApplet(String var1) {
  30.       var1 = var1.toLowerCase();
  31.       Hashtable var3 = this.panels;
  32.       Enumeration var2;
  33.       synchronized(var3) {
  34.          var2 = this.panels.elements();
  35.       }
  36.  
  37.       while(var2.hasMoreElements()) {
  38.          PluginPanel var4 = (PluginPanel)var2.nextElement();
  39.          String var5 = var4.getParameter("name");
  40.          if (var5 != null) {
  41.             var5 = var5.toLowerCase();
  42.          }
  43.  
  44.          if (var1.equals(var5)) {
  45.             return var4.getApplet();
  46.          }
  47.       }
  48.  
  49.       return null;
  50.    }
  51.  
  52.    public Enumeration getApplets() {
  53.       Vector var1 = new Vector();
  54.       Hashtable var3 = this.panels;
  55.       Enumeration var2;
  56.       synchronized(var3) {
  57.          var2 = this.panels.elements();
  58.       }
  59.  
  60.       while(var2.hasMoreElements()) {
  61.          var1.addElement(((PluginPanel)var2.nextElement()).getApplet());
  62.       }
  63.  
  64.       return var1.elements();
  65.    }
  66.  
  67.    public AudioClip getAudioClip(URL var1) {
  68.       checkConnect(var1);
  69.       AppletAudioClip var2 = new AppletAudioClip(var1);
  70.       return var2;
  71.    }
  72.  
  73.    public Image getImage(URL var1) {
  74.       Image var2 = Toolkit.getDefaultToolkit().createImage(new URLImageSource(var1));
  75.       return var2;
  76.    }
  77.  
  78.    public void showDocument(URL var1) {
  79.       this.showDocument(var1, "_self");
  80.    }
  81.  
  82.    public void showDocument(URL var1, String var2) {
  83.       Object var3 = opera_mutex;
  84.       synchronized(var3) {
  85.          String var4 = var1.toString();
  86.          this.showDocument(var4, var2);
  87.       }
  88.    }
  89.  
  90.    private native void showDocument(String var1, String var2);
  91.  
  92.    public native void showStatus(String var1);
  93.  
  94.    public static void init(String[] var0) throws SecurityException {
  95.       SecurityManager var1 = System.getSecurityManager();
  96.       if (var1 != null) {
  97.          var1.checkPermission(new AllPermission());
  98.       }
  99.  
  100.       for(int var2 = 0; var2 < var0.length / 2; ++var2) {
  101.          System.setProperty(var0[var2 * 2], var0[var2 * 2 + 1]);
  102.       }
  103.  
  104.       URL.setURLStreamHandlerFactory(new StreamHandlerFactory());
  105.    }
  106.  
  107.    public int newPanel(String[] var1, String[] var2, String[] var3, String[] var4, String var5) {
  108.       try {
  109.          Hashtable var6 = new Hashtable();
  110.  
  111.          for(int var7 = 0; var7 < var3.length; ++var7) {
  112.             var6.put(var3[var7].toLowerCase(), var4[var7]);
  113.          }
  114.  
  115.          Hashtable var8 = new Hashtable();
  116.  
  117.          for(int var9 = 0; var9 < var1.length; ++var9) {
  118.             var8.put(var1[var9].toLowerCase(), var2[var9]);
  119.          }
  120.  
  121.          PluginPanel var10 = new PluginPanel(this, var8, var6, new URL(var5));
  122.          Hashtable var11 = this.panels;
  123.          synchronized(var11) {
  124.             this.panels.put(new Integer(this.nextInstance), var10);
  125.             int var12 = this.nextInstance++;
  126.             return var12;
  127.          }
  128.       } catch (Exception var15) {
  129.          ((Throwable)var15).printStackTrace(System.err);
  130.          return -1;
  131.       }
  132.    }
  133.  
  134.    void destroyPanel(int var1) {
  135.       try {
  136.          PluginPanel var2 = (PluginPanel)this.panels.get(new Integer(var1));
  137.          if (var2 != null) {
  138.             var2.destroyApplet();
  139.             this.panels.remove(new Integer(var1));
  140.          }
  141.  
  142.          if (this.panels.size() == 0) {
  143.             PluginContextManager.deleteContext(this);
  144.          }
  145.       } catch (Exception var3) {
  146.          ((Throwable)var3).printStackTrace(System.err);
  147.       }
  148.  
  149.    }
  150.  
  151.    public PluginPanel getPanel(int var1) {
  152.       return (PluginPanel)this.panels.get(new Integer(var1));
  153.    }
  154.  
  155.    public native int getJSWindow();
  156.  
  157.    private static void checkConnect(URL var0) {
  158.       SecurityManager var1 = System.getSecurityManager();
  159.       if (var1 != null) {
  160.          try {
  161.             Permission var2 = var0.openConnection().getPermission();
  162.             if (var2 != null) {
  163.                var1.checkPermission(var2);
  164.             } else {
  165.                var1.checkConnect(var0.getHost(), var0.getPort());
  166.             }
  167.          } catch (IOException var3) {
  168.             var1.checkConnect(var0.getHost(), var0.getPort());
  169.          }
  170.       }
  171.  
  172.    }
  173.  
  174.    protected void setClassLoader(PluginClassLoader var1) {
  175.       if (this.loader == null) {
  176.          this.loader = var1;
  177.       }
  178.  
  179.    }
  180.  
  181.    protected void cleanup() {
  182.       if (this.loader != null) {
  183.          ThreadGroup var1 = this.loader.getThreadGroup();
  184.          this.loader = null;
  185.       }
  186.  
  187.    }
  188.  
  189.    public int getDocumentPtr() {
  190.       return this.document_ptr;
  191.    }
  192. }
  193.